package wht.jly.forum.utils;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * 存储返回的json格式数据
 * <p>
 * 1.  依赖于lombok，如果项目中不引入lombok，需要添加对应属性的Getter，Setter
 * <p>
 * 2.  将不再支持链式调用
 *
 * @author lanyangji
 * @date 2019/2/8 20:05
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class JsonData implements Serializable {

    /**
     * 响应状态码
     */
    private Integer code;

    /**
     * 响应消息
     */
    private String msg;

    /**
     * 响应数据
     */
    private Object data;

    /**
     * 构建返回数据
     *
     * @param code 响应状态码
     * @param msg  响应消息
     * @param data 响应数据
     * @return
     */
    public static JsonData build(Integer code, String msg, Object data) {
        return new JsonData(code, msg, data);
    }

    /**
     * 成功构建返回数据
     * <p>
     * 状态码 code 默认是 200
     *
     * @param msg  响应消息
     * @param data 响应数据
     * @return
     */
    public static JsonData buildSuccess(String msg, Object data) {
        return build(200, msg, data);
    }
}
